/**
 * 对于后端字典项的字段不能为非数字形，对于前端组件需要空字符串初始化字段，使用计算属性包装
 * 假如提供了字典，则表示需要和字典中的项进行匹配，如果字典项中不存在该值，也按空值处理，比如老数据的值是10，但是字典项中不存在10对应的值，则按空处理
 */
import { computed, toRef } from 'vue'
export function useDictNullValue(ref, key, dict = undefined, dictKey = '') {
  return computed({
    get: () => {
      if (dict && Array.isArray(dict.value[dictKey]) && !dict.value[dictKey].find(item => item.value === ref[key])) {
        toRef(ref, key).value = 0
        return ''
      } else {
        return ref[key] === 0 || ref[key] === '0' ? '' : ref[key]
      }
    },
    set: val => {
      ref[key] = val || 0
    }
  })
}
